home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #2 / Monster Media No. 2 (Monster Media)(1994).ISO / pcboard / bcmx120.zip / DOPROT.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-06-29  |  7KB  |  526 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Boolean  BOOLEAN005
  24.     Boolean  BOOLEAN006
  25.     Boolean  BOOLEAN007
  26.     Boolean  BOOLEAN008
  27.     Boolean  BOOLEAN009
  28.     Boolean  BOOLEAN010
  29.     Boolean  BOOLEAN011
  30.     Boolean  BOOLEAN012
  31.     Boolean  BOOLEAN013
  32.     Integer  INTEGER001
  33.     Integer  INTEGER002
  34.     Integer  INTEGER003
  35.     Integer  INTEGER004
  36.     Integer  INTEGER005
  37.     Integer  INTEGER006
  38.     Integer  INTEGER007
  39.     Integer  INTEGER008
  40.     Integer  INTEGER009
  41.     Integer  INTEGER010
  42.     Integer  INTEGER011
  43.     Integer  INTEGER012
  44.     Integer  INTEGER013
  45.     Integer  INTEGER014
  46.     Integer  INTEGER015
  47.     Integer  INTEGER016
  48.     Integer  INTEGER017
  49.     Integer  INTEGER018
  50.     Integer  INTEGER019
  51.     Integer  INTEGER020
  52.     Integer  INTEGER021
  53.     Integer  INTEGER022
  54.     Integer  INTEGER023
  55.     Integer  INTEGER024
  56.     Integer  INTEGER025
  57.     String   STRING001
  58.     String   STRING002
  59.     String   TSTRING003(100)
  60.     String   STRING004
  61.     String   STRING005
  62.     String   STRING006
  63.     String   STRING007
  64.     String   STRING008
  65.     String   STRING009
  66.     String   TSTRING010(20)
  67.     String   STRING011
  68.     String   STRING012
  69.     String   STRING013
  70.     String   STRING014
  71.     String   STRING015
  72.     String   STRING016
  73.     String   STRING017
  74.     String   STRING018
  75.     String   STRING019
  76.     Int      INT001
  77.     Int      INT002
  78.     Int      INT003
  79.     Int      INT004
  80.     BigStr   BIGSTR001
  81.  
  82. ;------------------------------------------------------------------------------
  83.  
  84.     BOOLEAN001 = 1
  85.     STRING009 = PPEPath()
  86.     BOOLEAN005 = 0
  87.     BOOLEAN006 = 1
  88.     BOOLEAN008 = 0
  89.     BOOLEAN009 = 0
  90.     BOOLEAN007 = 0
  91.     If (AnsiOn()) Goto LABEL001
  92.     Newline
  93.     PrintLn "No ansi"
  94.     End
  95.     :LABEL001
  96.     BOOLEAN010 = 0
  97.     BOOLEAN011 = 0
  98.     BOOLEAN013 = 0
  99.     BOOLEAN012 = 0
  100.     Goto LABEL016
  101.     :LABEL002
  102.     INTEGER023 = INTEGER005
  103.     INTEGER019 = INTEGER006
  104.     STRING015 = STRING004
  105.     INTEGER024 = INTEGER001
  106.     INTEGER025 = INTEGER002
  107.     BOOLEAN010 = 0
  108.     BOOLEAN011 = 0
  109.     STRING016 = "NORMAL"
  110.     BOOLEAN012 = 0
  111.     BOOLEAN013 = 1
  112.     BOOLEAN004 = 0
  113.     BOOLEAN002 = 0
  114.     BOOLEAN001 = 1
  115.     If (INTEGER019 > 15) Redim TSTRING010, INTEGER019
  116.     BIGSTR001 = STRING007
  117.     INTEGER013 = 1
  118.     STRING013 = Chr(13)
  119.     STRING014 = Chr(27)
  120.     BOOLEAN003 = IsNonStop()
  121.     StartDisp 1
  122.     INTEGER013 = 1
  123.     :LABEL003
  124.     INTEGER014 = INTEGER023
  125.     DefColor
  126.     If (BOOLEAN007) Goto LABEL004
  127.     AnsiPos INTEGER024, INTEGER025
  128.     DispFile BIGSTR001, 1 + 4
  129.     :LABEL004
  130.     If (INTEGER019 >= INTEGER023) Then
  131.         INTEGER019 = INTEGER023
  132.     Endif
  133.     DefColor
  134.     If (BOOLEAN006) Goto LABEL005
  135.     INTEGER017 = INTEGER022 * 2
  136.     For INTEGER015 = INTEGER022 To INTEGER021
  137.         INTEGER009 = INTEGER015
  138.         Gosub LABEL010
  139.         AnsiPos INTEGER010, INTEGER011
  140.         Print Space(INTEGER003)
  141.         INTEGER017 = INTEGER017 + 2
  142.     Next
  143.     Goto LABEL006
  144.     :LABEL005
  145.     BOOLEAN006 = 0
  146.     :LABEL006
  147.     If (INTEGER013 + INTEGER019 <= INTEGER014) INTEGER020 = INTEGER013 + INTEGER019 - 1
  148.     If (INTEGER013 + INTEGER019 > INTEGER014) INTEGER020 = INTEGER014
  149.     INTEGER022 = INTEGER013
  150.     INTEGER021 = INTEGER020
  151.     INTEGER017 = INTEGER013 * 2
  152.     INTEGER016 = 1
  153.     For INTEGER015 = INTEGER013 To INTEGER020
  154.         INTEGER016 = INTEGER015 % INTEGER019
  155.         If (INTEGER016 == 0) INTEGER016 = INTEGER019
  156.         INTEGER010 = INTEGER024
  157.         INTEGER011 = INTEGER025 + INTEGER016 - 1
  158.         AnsiPos INTEGER010, INTEGER011
  159.         Print STRING006, TSTRING003(INTEGER015)
  160.         INTEGER017 = INTEGER017 + 2
  161.         Inc INTEGER016
  162.     Next
  163.     BOOLEAN007 = 0
  164.     INTEGER009 = INTEGER013
  165.     Gosub LABEL010
  166.     AnsiPos INTEGER010, INTEGER011
  167.     Print STRING015, Left(StripAtx(TSTRING003(INTEGER013)), INTEGER003)
  168.     :LABEL007
  169.     STRING011 = Inkey()
  170.     :LABEL008
  171.     Select Case (STRING011)
  172.         Case "UP", "LEFT", ","
  173.             If ((STRING011 == "LEFT") && (STRING016 == "PULLDOWNMENU")) Then
  174.                 Gosub LABEL015
  175.                 KbdStuff ","
  176.                 End
  177.             Endif
  178.             Gosub LABEL011
  179.             If (INTEGER013 % INTEGER019 == 1) Then
  180.                 INTEGER013 = INTEGER013 + INTEGER019 - 1
  181.                 If (INTEGER013 > INTEGER014) INTEGER013 = INTEGER014
  182.             Else
  183.                 INTEGER013 = INTEGER013 - 1 % INTEGER019
  184.             Endif
  185.             Gosub LABEL012
  186.             Goto LABEL007
  187.         Case "DOWN", "RIGHT", "."
  188.             If ((STRING011 == "RIGHT") && (STRING016 == "PULLDOWNMENU")) Then
  189.                 Gosub LABEL015
  190.                 KbdStuff "."
  191.                 End
  192.             Endif
  193.             If ((STRING011 == "DOWN") && (STRING016 == "PULLDOWNMAIN")) Then
  194.                 STRING011 = STRING013
  195.                 Goto LABEL008
  196.             Endif
  197.             Gosub LABEL011
  198.             If (INTEGER013 % INTEGER019 == 0) Then
  199.                 INTEGER013 = INTEGER013 - INTEGER019 - 1
  200.             ElseIf (INTEGER013 == INTEGER014) Then
  201.                 INTEGER013 = INTEGER022
  202.             Else
  203.                 INTEGER013 = INTEGER013 + 1
  204.             Endif
  205.             Gosub LABEL012
  206.             Goto LABEL007
  207.         Case "?"
  208.             DefColor
  209.             Gosub LABEL013
  210.             Goto LABEL007
  211.         Case STRING013
  212.             INTEGER015 = INTEGER013
  213.             INTEGER010 = GetX()
  214.             INTEGER011 = GetY()
  215.             INTEGER008 = INTEGER013
  216.             Gosub LABEL017
  217.             If (BOOLEAN008) Then
  218.                 BOOLEAN008 = 0
  219.                 STRING011 = "<"
  220.                 Goto LABEL008
  221.             ElseIf (BOOLEAN009) Then
  222.                 BOOLEAN009 = 0
  223.                 STRING011 = ">"
  224.                 Goto LABEL008
  225.             Endif
  226.             If (BOOLEAN010) Goto LABEL009
  227.             AnsiPos INTEGER010, INTEGER011
  228.             Goto LABEL007
  229.             :LABEL009
  230.             If (BOOLEAN005) Then
  231.                 BOOLEAN005 = 0
  232.                 Goto LABEL007
  233.             Endif
  234.             AnsiPos INTEGER024, INTEGER025
  235.             DispStr BIGSTR001
  236.             For INTEGER015 = INTEGER022 To INTEGER021
  237.                 INTEGER009 = INTEGER015
  238.                 Gosub LABEL010
  239.                 AnsiPos INTEGER010, INTEGER011
  240.                 If (INTEGER013 == INTEGER015) Then
  241.                     Print STRING015, Left(StripAtx(TSTRING003(INTEGER015)), INTEGER003)
  242.                     Continue
  243.                 Endif
  244.                 Print STRING006, TSTRING003(INTEGER015)
  245.             Next
  246.             AnsiPos INTEGER010, INTEGER011
  247.             Goto LABEL007
  248.         Case "HOME"
  249.             Gosub LABEL011
  250.             INTEGER013 = INTEGER022
  251.             Gosub LABEL012
  252.             Goto LABEL007
  253.         Case "END"
  254.             Gosub LABEL011
  255.             INTEGER013 = INTEGER021
  256.             Gosub LABEL012
  257.             Goto LABEL007
  258.         Case ">", "CTRL PGDN"
  259.             If (INTEGER021 + INTEGER019 <= INTEGER014) Then
  260.                 INTEGER013 = INTEGER021 + 1
  261.                 BOOLEAN007 = 1
  262.                 Goto LABEL003
  263.             Else
  264.                 If (INTEGER021 <> INTEGER014) Then
  265.                     INTEGER013 = INTEGER021 + 1
  266.                     BOOLEAN007 = 1
  267.                     Goto LABEL003
  268.                 Endif
  269.                 If (BOOLEAN011) Then
  270.                     INTEGER013 = 1
  271.                     BOOLEAN007 = 1
  272.                     Goto LABEL003
  273.                 Endif
  274.                 Sound 1000
  275.                 Delay 2
  276.                 Sound 0
  277.                 Goto LABEL007
  278.             Endif
  279.         Case "<", "CTRL PGUP"
  280.             If (INTEGER022 - INTEGER019 >= 1) Then
  281.                 INTEGER013 = INTEGER022 - INTEGER019
  282.                 BOOLEAN007 = 1
  283.                 Goto LABEL003
  284.             Else
  285.                 If (BOOLEAN011) Then
  286.                     INTEGER012 = INTEGER014 % INTEGER019
  287.                     If (INTEGER012 == 0) INTEGER012 = INTEGER019
  288.                     INTEGER013 = INTEGER014 - INTEGER012 + 1
  289.                     BOOLEAN007 = 1
  290.                     Goto LABEL003
  291.                 Endif
  292.                 Sound 1000
  293.                 Delay 2
  294.                 Sound 0
  295.                 Goto LABEL007
  296.             Endif
  297.         Case STRING014
  298.             If (!BOOLEAN004) Goto LABEL007
  299.             DefColor
  300.             If (BOOLEAN013) Then
  301.                 DefColor
  302.                 Cls
  303.             Endif
  304.             If (!BOOLEAN003) StartDisp 2
  305.             End
  306.         Case Else
  307.             If (STRING011 == "") Goto LABEL007
  308.             INTEGER017 = (INTEGER013 + 1) * 2
  309.             INTEGER018 = INTEGER017 - 3
  310.             INTEGER016 = 1
  311.             For INTEGER015 = INTEGER022 To INTEGER021
  312.                 If (TSTRING010(INTEGER015) == Upper(STRING011)) Then
  313.                     Gosub LABEL014
  314.                     INTEGER013 = INTEGER015
  315.                     If (!BOOLEAN001) Goto LABEL007
  316.                     STRING011 = STRING013
  317.                     Goto LABEL008
  318.                 Endif
  319.             Next
  320.             Goto LABEL007
  321.     End Select
  322.     End
  323.     :LABEL010
  324.     INT001 = INTEGER009 % INTEGER019
  325.     If (INT001 == 0) INT001 = INTEGER019
  326.     INTEGER010 = INTEGER024
  327.     INTEGER011 = INTEGER025 + INT001 - 1
  328.     Return
  329.     :LABEL011
  330.     INT001 = INTEGER013 % INTEGER019
  331.     If (INT001 == 0) INT001 = INTEGER019
  332.     INTEGER010 = INTEGER024
  333.     INTEGER011 = INTEGER025 + INT001 - 1
  334.     AnsiPos INTEGER010, INTEGER011
  335.     Print STRING006, Space(INTEGER003)
  336.     AnsiPos INTEGER010, INTEGER011
  337.     Print TSTRING003(INTEGER013)
  338.     Return
  339.     :LABEL012
  340.     INT001 = INTEGER013 % INTEGER019
  341.     If (INT001 == 0) INT001 = INTEGER019
  342.     INTEGER010 = INTEGER024
  343.     INTEGER011 = INTEGER025 + INT001 - 1
  344.     AnsiPos INTEGER010, INTEGER011
  345.     Print STRING015, Left(StripAtx(TSTRING003(INTEGER013)), INTEGER003)
  346.     Return
  347.     :LABEL013
  348.     STRING012 = PPEPath() + "graph\prothlp"
  349.     AnsiPos 1, 23
  350.     SaveScrn
  351.     StartDisp 2
  352.     Cls
  353.     DispFile STRING012, 1 + 4
  354.     Wait
  355.     StartDisp 1
  356.     RestScrn
  357.     AnsiPos INTEGER010, INTEGER011
  358.     Return
  359.     :LABEL014
  360.     INT001 = INTEGER013 % INTEGER019
  361.     If (INT001 == 0) INT001 = INTEGER019
  362.     INTEGER010 = INTEGER024
  363.     INTEGER011 = INTEGER025 + INT001 - 1
  364.     AnsiPos INTEGER010, INTEGER011
  365.     Print STRING006, Space(INTEGER003)
  366.     AnsiPos INTEGER010, INTEGER011
  367.     Print TSTRING003(INTEGER013)
  368.     INTEGER017 = INTEGER015 * 2
  369.     INT001 = INTEGER015 % INTEGER019
  370.     If (INT001 == 0) INT001 = INTEGER019
  371.     INTEGER010 = INTEGER024
  372.     INTEGER011 = INTEGER025 + INT001 - 1
  373.     AnsiPos INTEGER010, INTEGER011
  374.     Print STRING015, Left(StripAtx(TSTRING003(INTEGER015)), INTEGER003)
  375.     Return
  376.     :LABEL015
  377.     DefColor
  378.     For INTEGER015 = 0 To 0
  379.         AnsiPos 0, INTEGER015
  380.         Print Space(0 - 0 + 1)
  381.     Next
  382.     Return
  383.     :LABEL016
  384.     Cls
  385.     STRING001 = ReadLine(PCBDat(), 45)
  386.     STRING002 = PPEPath() + "cfg\prot.cfg"
  387.     FreshLine
  388.     INTEGER007 = Random(ToInteger(ReadLine(STRING002, 1)) - 1) + 1
  389.     Tokenize ReadLine(STRING002, INTEGER007 + 1)
  390.     STRING019 = PPEPath() + "graph\prottext"
  391.     If (LangExt() <> "") Then
  392.         If (Exist(STRING019 + LangExt())) STRING019 = STRING019 + LangExt()
  393.     Endif
  394.     INTEGER001 = GetToken()
  395.     INTEGER002 = GetToken()
  396.     INT003 = GetToken()
  397.     INT004 = GetToken()
  398.     INTEGER006 = GetToken()
  399.     INTEGER003 = GetToken()
  400.     STRING004 = GetToken()
  401.     STRING006 = GetToken()
  402.     STRING008 = GetToken()
  403.     STRING007 = PPEPath() + "graph\prot1"
  404.     INTEGER004 = 1
  405.     STRING005 = ReadLine(STRING001, INTEGER004)
  406.     While (STRING005 <> "") Do
  407.         TSTRING010(INTEGER004) = Upper(Left(STRING005, 1))
  408.         INT002 = Len(STRING005)
  409.         STRING018 = Mid(STRING005, 5, INT002 - 6 - 4)
  410.         STRING018 = Mid(STRING018, InStr(STRING018, ",") + 1, Len(STRING018))
  411.         STRING017 = STRING008 + TSTRING010(INTEGER004) + STRING006 + " " + STRING018
  412.         TSTRING003(INTEGER004) = STRING017
  413.         Inc INTEGER004
  414.         STRING005 = ReadLine(STRING001, INTEGER004)
  415.     EndWhile
  416.     INTEGER005 = INTEGER004 - 1
  417.     Goto LABEL002
  418.     :LABEL017
  419.     FCreate 1, PPEPath() + "work\prottmp." + String(PcbNode()), 1, 0
  420.     FPutLn 1, TSTRING010(INTEGER008)
  421.     FClose 1
  422.     AnsiPos INT003, INT004
  423.     Print ReplaceStr(ReadLine(STRING019, 1), "%PROT%", TSTRING010(INTEGER008))
  424.     Delay 18
  425.     End
  426.  
  427. ;------------------------------------------------------------------------------
  428. ;
  429. ; Usage report (before postprocessing)
  430. ;
  431. ; ■ Statements used :
  432. ;
  433. ;    6       End
  434. ;    3       Cls
  435. ;    1       Wait
  436. ;    86      Goto 
  437. ;    143     Let 
  438. ;    13      Print 
  439. ;    1       PrintLn 
  440. ;    54      If 
  441. ;    2       DispFile 
  442. ;    1       FCreate 
  443. ;    1       FClose 
  444. ;    1       FPutLn 
  445. ;    4       StartDisp 
  446. ;    6       DefColor
  447. ;    16      Gosub 
  448. ;    6       Return
  449. ;    3       Delay 
  450. ;    2       Inc 
  451. ;    1       Newline
  452. ;    1       Tokenize 
  453. ;    2       KbdStuff 
  454. ;    1       DispStr 
  455. ;    18      AnsiPos 
  456. ;    1       FreshLine
  457. ;    1       SaveScrn
  458. ;    1       RestScrn
  459. ;    4       Sound 
  460. ;    1       Redim 
  461. ;
  462. ;
  463. ; ■ Functions used :
  464. ;
  465. ;    4       *
  466. ;    10      %
  467. ;    41      +
  468. ;    20      -
  469. ;    34      ==
  470. ;    3       <>
  471. ;    5       <
  472. ;    7       <=
  473. ;    3       >
  474. ;    12      >=
  475. ;    41      !
  476. ;    13      &&
  477. ;    11      ||
  478. ;    2       Len(
  479. ;    2       Upper()
  480. ;    2       Mid()
  481. ;    5       Left()
  482. ;    4       Space()
  483. ;    2       Chr()
  484. ;    1       InStr()
  485. ;    1       Random()
  486. ;    4       StripAtx()
  487. ;    1       Inkey()
  488. ;    1       String()
  489. ;    1       PCBDat()
  490. ;    6       PPEPath()
  491. ;    1       PcbNode()
  492. ;    6       ReadLine()
  493. ;    9       GetToken()
  494. ;    1       Exist()
  495. ;    3       LangExt()
  496. ;    1       AnsiOn()
  497. ;    1       GetX()
  498. ;    1       GetY()
  499. ;    1       ReplaceStr()
  500. ;    1       ToInteger()
  501. ;    1       IsNonStop()
  502. ;
  503. ;------------------------------------------------------------------------------
  504. ;
  505. ; Analysis flags : d
  506. ;
  507. ; d - Access PCBOARD.DAT ■ 2
  508. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  509. ;     for many PPE so they can find various informations on the system
  510. ;     (system paths, max number of lines in messages, ...) but it may also
  511. ;     be a way to gather vital informations.
  512. ;     ■ Search for : PCBDAT()
  513. ;
  514. ;------------------------------------------------------------------------------
  515. ;
  516. ; Postprocessing report
  517. ;
  518. ;    5       For/Next
  519. ;    1       While/EndWhile
  520. ;    19      If/Then or If/Then/Else
  521. ;    1       Select Case
  522. ;
  523. ;------------------------------------------------------------------------------
  524. ;                 AEGiS Corp - Break the routines, code against the machines!
  525. ;------------------------------------------------------------------------------
  526.